// pages/search/search.js
import request from '../../utils/request'
let isSend = false; //函数节流 输入框
Page({

  /**
   * 页面的初始数据
   */
  data: {
    placeholderContent:'',// 默认内容 placeholder
    hotList:[], //热搜数据
    searchContent:'',//用户输入的表单项数据
    searchList:[],//关键字模糊匹配的数据
    historyList:[], //搜素历史记录
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {
    //获取初始化数据
    this.getInitData();
    //获取历史记录
    this.getSearchHistory();
  },
  // 获取初始化的数据
  async getInitData(){
    let placeholderData = await request('/search/default');
    let hotListDta = await request('/search/hot/detail')
    //更新数据到 data 里保存
    this.setData({
      placeholderContent: placeholderData.data.showKeyword,
      hotList: hotListDta.data
    })
  },

  //获取本地历史记录的功能函数
  getSearchHistory(){
    let historyList = wx.getStorageSync('searchHistory');
    if(historyList){
      this.setData({
        historyList
      })
    }
  },
  
  //表单项内容发生改变的回调
  handleInputChange(event){
    //console.log(event);
    //更新 searchContent 的状态
    this.setData({
      searchContent:event.detail.value.trim()
    })
    //节流
    if(isSend){
      return
     }  
     isSend =true;
     //调用关键字模糊函数
      this.geSearchList();
      //函数节流
      setTimeout(() =>{
        isSend = false;
      },300)
  },
  //获取搜索数据的功能函数 
  async geSearchList(){
    //当输入框内容删除为空的时候不发送请求
    if(!this.data.searchContent){
      //如果表单为空，把它设置为空
      this.setData({
        searchList:[]
      })
      return;
    }
    let { searchContent, historyList} = this.data;
    //发请求获取关键字模糊
    let searchListData = await request('/search',{keywords: searchContent, limit:10});
    this.setData({
      searchList: searchListData.result.songs
    })

    //将搜索的关键字添加到搜索历史中
    //判断数组去重
    if(historyList.indexOf(searchContent) !== -1){
      historyList.splice(historyList.indexOf(searchContent), 1)
    }
    historyList.unshift(searchContent);
    this.setData({
      historyList
    })
    wx.setStorageSync('searchHistory', historyList)
  },

  //清空搜素内容 
  clearSearhContent(){
    this.setData({
      searchContent:'',
      searchList:[]
    })
  },

  //删除搜素记录
  deleteSearchHistory(){
    wx.showModal({
      cancelColor: '确定要删除吗？',
      success:(res)=>{
        if(res.confirm){
          //1.清空data 中的 historyList历史记录
          this.setData({
            historyList:[]
          })
          //2.同时本地的也要删除
          wx.removeStorageSync('searchHistory')
        }
      }
    })
   
  }
})